//先安装ssh2 ( npm i ssh2 )
const Client = require('ssh2').Client;
let conn = new Client();

connect()

// 上传压缩包到服务器指定目录
function connect() {
    conn.on('ready', () => {
        conn.sftp((err, sftp) => {
            sftp.fastPut('./dist.tar.gz', '/www/wwwroot/cj.wzhyt.cn/dist.tar.gz', {}, (err, result) => {
                //上传完成后开始解压
                Shell(conn)
            })
        })
    }).on('error', async err => {
        console.log('Client 链接错误', err.toString())
    }).connect({
        host: '150.158.81.177', //ip
        port: 22, //默认22端口
        username: 'root', //默认root用户名
        password: 'WangZhou20001017+-.', //服务器密码
        readyTimeout: 5000 //响应超时时间
    })
}

// 服务器解压操作
function Shell(conn) {
    conn.shell((err, stream) => {
        stream.end(
            `
             cd /www/wwwroot/cj.wzhyt.cn
             tar zxvf dist.tar.gz
             mv dist/* /www/wwwroot/cj.wzhyt.cn
             rm -rf dist.tar.gz
             rm -rf dist
             exit
            `
            /* 以上命令按顺序执行
            * 进入服务器部署地址
            * 解压上传的压缩包
            * 移动解压好的文件夹下所有的文件到指定目录下
            * 删除压缩包
            * 删除压缩后的文件夹
            * 退出
            * */
        ).on('data', data => {
            console.log(data.toString())
        }).on('close', () => {
            conn.end()
            console.log("服务器自动化部署完成")
        })
    })
}
